From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Albinus Subject: Re: [Patch] org-display-inline-images: Add support for remote images Date: Tue, 25 Nov 2014 16:39:02 +0100 Message-ID: <87bnnv1e95.fsf@gmx.de> References: <87vbm3of2o.fsf@selenimh.mobile.lan> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:52917) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XtICv-0002Ws-ND for emacs-orgmode@gnu.org; Tue, 25 Nov 2014 10:39:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XtICp-00041Z-Dd for emacs-orgmode@gnu.org; Tue, 25 Nov 2014 10:39:13 -0500 Received: from mout.gmx.net ([212.227.15.19]:50213) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XtICp-00041K-2x for emacs-orgmode@gnu.org; Tue, 25 Nov 2014 10:39:07 -0500 In-Reply-To: (Kit-Yan Choi's message of "Tue, 25 Nov 2014 10:29:35 -0500") 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: Kit-Yan Choi Cc: emacs-orgmode@gnu.org Kit-Yan Choi writes: > Ah my apologies. I forgot I had to use `file-name-directory' for > creating the path to the temporary directory (too long ago since I did > this). Here is the corrected version. > > --- a/lisp/org.el > +++ b/lisp/org.el > @@ -19340,7 +19340,7 @@ boundaries." > (not (cdr (org-element-contents parent))))) > (org-string-match-p file-extension-re > (org-element-property :path link))) > - (let ((file (expand-file-name (org-element-property :path link)))) > + (let ((file (substitute-in-file-name (expand-file-name > (org-element-property :path link))))) > (when (file-exists-p file) > (let ((width > ;; Apply `org-image-actual-width' specifications. > @@ -19378,10 +19378,25 @@ boundaries." > 'org-image-overlay))) > (if (and (car-safe old) refresh) > (image-refresh (overlay-get (cdr old) 'display)) > - (let ((image (create-image file > - (and width 'imagemagick) > - nil > - :width width))) > + (let ((image > + (create-image (if (org-file-remote-p file) > + (let* ((tramp-tmpdir (concat > + (if (featurep 'xemacs) > + (temp-directory) > + temporary-file-directory) > + "/tramp" > + (file-name-directory (expand-file-name file)))) > + (newname (concat > + tramp-tmpdir > + (file-name-nondirectory (expand-file-name file))))) > + (make-directory tramp-tmpdir t) > + (if (file-newer-than-file-p file newname) > + (copy-file file newname t t)) > + newname) > + file) > + (and width 'imagemagick) > + nil > + :width width))) > (when image > (let* ((link > ;; If inline image is the description This code looks much to complicate to me. Wouldn't a simple file-local-copy suffice? You don't need to care whether the file is remote (let Tramp do the job) or local (there won't be a copy). Best regards, Michael.