* org-redisplay-inline-images and export to HTML
@ 2014-07-21 22:12 Brett Viren
2014-07-21 23:17 ` Nick Dokos
0 siblings, 1 reply; 5+ messages in thread
From: Brett Viren @ 2014-07-21 22:12 UTC (permalink / raw)
To: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 3143 bytes --]
Someone recently posted a tip to add
:post (org-redisplay-inline-images)
to a SRC block which generates an image in order to freshen the Emacs
buffer with the regenerated image each time the block is executed. It
works *almost* fine but I have two problems which I hope someone can
help with.
1) Priming-the-pump
I'm using a document containing a GraphViz graph and running "dot" on it:
----------------------------------------------------------------------
#+BEGIN_SRC dot :cmd dot :cmdline -Tpng :file foo.png :exports results :post (org-redisplay-inline-images)
digraph "foo" {
rankdir=LR;
params -> builders;
builders -> objects;
objects -> file;
}
#+END_SRC
----------------------------------------------------------------------
I do "C-c C-c" in the block and the buffer does not display any result.
I see the messages:
----------------------------------------------------------------------
No images to display inline
executing Dot code block...
Wrote /tmp/babel-11819Iqr/ob-input-11819Lrv
org-babel-ref-resolve: Reference 'No images to display inline' not found in this buffer
----------------------------------------------------------------------
If I do "C-c hh" to export to HTML I see:
----------------------------------------------------------------------
org-babel-exp processing...
No images to display inline [2 times]
executing Dot code block...
Wrote /tmp/babel-11819Iqr/ob-input-11819kTR
org-babel-ref-resolve: Reference 'No images to display inline' not found in this buffer
----------------------------------------------------------------------
And I get no HTML file produced.
If I now take out the :post and do "C-c C-c" I get this appearing just
after the SRC block as expected:
----------------------------------------------------------------------
#+RESULTS:
[[file:foo.png]]
----------------------------------------------------------------------
If I now add back the ":post" and do "C-c C-c" again I get the inlined
image. I can now edit the SRC block and repeat the "C-c C-c" and I am
pleased to see the figure refresh each time. It's great! But, it needs
this "pump priming".
2) Post-priming, still no HTML export
After this "priming the pump" is done the second problem is that still a
"C-c hh" does not produce an exported HTML file. Similar messages:
----------------------------------------------------------------------
org-babel-exp processing...
No images to display inline
Inline image display turned off
No images to display inline
executing Dot code block...
Wrote /tmp/babel-11819Iqr/ob-input-11819zYx
org-babel-ref-resolve: Reference 'No images to display inline' not found in this buffer
----------------------------------------------------------------------
Finally, if I remove the :post but leave the "#+RESULTS:" I can do
a successful "C-c hh".
So, the upshot is I have to keep adding and removing the :post to make
things work in different contexts. This is obviously not so smooth.
Is there some way to both have my cake an eat it too?
Thanks!
-Brett.
[-- Attachment #2: Type: application/pgp-signature, Size: 180 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: org-redisplay-inline-images and export to HTML
2014-07-21 22:12 org-redisplay-inline-images and export to HTML Brett Viren
@ 2014-07-21 23:17 ` Nick Dokos
2014-07-22 13:57 ` Brett Viren
0 siblings, 1 reply; 5+ messages in thread
From: Nick Dokos @ 2014-07-21 23:17 UTC (permalink / raw)
To: emacs-orgmode
Brett Viren <bv@bnl.gov> writes:
> Someone recently posted a tip to add
>
> :post (org-redisplay-inline-images)
>
> to a SRC block which generates an image in order to freshen the Emacs
> buffer with the regenerated image each time the block is executed. It
> works *almost* fine but I have two problems which I hope someone can
> help with.
>
>
> 1) Priming-the-pump
> ...
>
> 2) Post-priming, still no HTML export
>
> ...
>
> So, the upshot is I have to keep adding and removing the :post to make
> things work in different contexts. This is obviously not so smooth.
>
>
> Is there some way to both have my cake an eat it too?
>
The :post trick works by side-effect: org-redisplay-inline-images does
what it says and it returns the string that `message' prints in the echo
area. Unfortunately, on export, :post is processed further with the
result that the meaningless string is passed to org-babel-ref-resolve
as a reference to be resolved - with predictable results[fn:1].
I think you'd be better off with the tip that Rick Frankel posted in
the same thread:
--8<---------------cut here---------------start------------->8---
#+BEGIN_SRC emacs-lisp
(add-hook 'org-babel-after-execute-hook
(lambda () (org-display-inline-images nil t)))
#+END_SRC
--8<---------------cut here---------------end--------------->8---
That's executed after you evaluate the block so it displays any
image(s) produced. And it does not interfere with export.
Footnotes:
[fn:1] Assuming 20-20 hindsight of course...
Nick
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-01-22 13:34 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-21 22:12 org-redisplay-inline-images and export to HTML Brett Viren
2014-07-21 23:17 ` Nick Dokos
2014-07-22 13:57 ` Brett Viren
2014-07-22 15:40 ` Nick Dokos
[not found] ` <8761ip5rml.fsf-/Z0n3E7Cx4sTdff2QS34phcY2uh10dtjAL8bYrjMMd8@public.gmane.org>
2015-01-22 13:34 ` Live refresh of inline images with org-display-inline-images stopped working Sebastien Vauban
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.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).