From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Dokos Subject: Re: Displaying remote images Date: Mon, 02 Dec 2019 15:27:09 -0500 Message-ID: <871rtmbhia.fsf@alphaville.usersys.redhat.com> References: <8736e8sza3.fsf@gmail.com> <87tv6nsaqh.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:45332) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ibsHz-0007If-T2 for emacs-orgmode@gnu.org; Mon, 02 Dec 2019 15:27:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ibsHy-00029X-HS for emacs-orgmode@gnu.org; Mon, 02 Dec 2019 15:27:23 -0500 Received: from 195-159-176-226.customer.powertech.no ([195.159.176.226]:40222 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ibsHy-00029O-Am for emacs-orgmode@gnu.org; Mon, 02 Dec 2019 15:27:22 -0500 Received: from list by blaine.gmane.org with local (Exim 4.89) (envelope-from ) id 1ibsHv-0012d0-3j for emacs-orgmode@gnu.org; Mon, 02 Dec 2019 21:27:19 +0100 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" To: emacs-orgmode@gnu.org Jack Kamm writes: > I've attached a patch which implements displaying remote images. > >> This is a longstanding problem, and there was an attempt to patch it in >> 2014, but the patch was never accepted: >> https://lists.gnu.org/archive/html/emacs-orgmode/2014-11/msg00583.html > > Compared to the previous attempt from 2014, I think my patch is simpler > -- it doesn't require creating any temp files. > >> The fault might be with image.el rather than with org-mode itself -- >> for example, when I execute the following elisp, I get the same blank >> box: > > After doing some reading, I learned that image.el doesn't really create > the image. Instead, create-image simply creates a blank string with a > text property pointing to the image file location, and the rendering of > the image gets handled later by the C code (for example, png_load_body() > in image.c), which doesn't know how to read remote image files. > > Since I wasn't comfortable trying to get the C code to read the remote > file, I instead took the approach used by image-mode.el, which reads the > remote image file and passes its contents directly to create-image, > instead of just passing the filename. > > From 47120666dad6eb0b6ca716325d7de86924e1d28e Mon Sep 17 00:00:00 2001 > From: Jack Kamm > Date: Thu, 28 Nov 2019 17:45:56 -0800 > Subject: [PATCH] org: display remote images > > --- > lisp/org.el | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/lisp/org.el b/lisp/org.el > index 90f222c8b..dc7bcc7aa 100644 > --- a/lisp/org.el > +++ b/lisp/org.el > @@ -16754,13 +16754,20 @@ buffer boundaries with possible narrowing." > (t nil))) > (old (get-char-property-and-overlay > (org-element-property :begin link) > - 'org-image-overlay))) > + 'org-image-overlay)) > + (remote-p (file-remote-p file))) > (if (and (car-safe old) refresh) > (image-refresh (overlay-get (cdr old) 'display)) > - (let ((image (create-image file > + (let ((image (create-image (if (not remote-p) > + file > + (with-temp-buffer > + (insert-file-contents file) > + (string-make-unibyte > + (buffer-substring-no-properties > + (point-min) (point-max))))) > (and (image-type-available-p 'imagemagick) > width 'imagemagick) > - nil > + remote-p > :width width))) > (when image > (let ((ov (make-overlay FWIW, looks good to me, but I've only (carefully) read the patch: I have not actually ran it. -- Nick "There are only two hard problems in computer science: cache invalidation, naming things, and off-by-one errors." -Martin Fowler