emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] Re: Wow -- adding images to an org file


From: Carsten Dominik
Subject: Re: [Orgmode] Re: Wow -- adding images to an org file
Date: Wed, 12 May 2010 14:41:52 +0200

Hi Dan,

On May 11, 2010, at 11:29 PM, Dan Davison wrote:

Russell Adams <address@hidden> writes:

On Sat, May 08, 2010 at 12:51:41PM +0200, Carsten Dominik wrote:
We have now native inline image display in Org-mode, you can toggle it
with

C-c C-x C-v

This implementation uses overlays instead of text properties and
therefore does not interfere with font-lock.

- Carsten

I'm using Org-Babel and R, and when I use C-c C-c to update the output
from a block of code, the image in emacs doesn't change.

Ideas? v6.36

Hi Russell,

I struggled with this when images were text properties, i.e. before
Carsten's implementation using overlays (thanks for C-c C-x C-v
Carsten!)

I think the answer may be clear-image-cache.

Yes, when you change an image on the disk, you need to clear the cache
to make sure it is not being pulled out of the cache. image-refresh will just clear the cache for an individual image, and make it redisplay in his way.

I have applied you patch, but I am clearing the cache before displaying the new images. When removing the org images, it is possible that the image cache still contains other images.

I have also added new arguments to org-display-inline-images which will allow you to call it in a way hat it refreshes existing images without clearing the entire cache. Maybe you can do that in order to update after babel operations?


I just tried that and C-c
C-x C-v showed the new image afterwards. I'm not sure whether the
following is acceptable in terms of emacs ecology, but it seems to do
the trick:

--8<---------------cut here---------------start------------->8---
diff --git a/lisp/org.el b/lisp/org.el
index c52aeb0..85f1219 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -15507,6 +15507,7 @@ with a description part will be inlined."
 "Remove inline display of images."
 (interactive)
 (mapc 'delete-overlay org-inline-image-overlays)
+  (clear-image-cache)
 (setq org-inline-image-overlays nil))
--8<---------------cut here---------------end--------------->8---

Note also that we can make image display happen automatically after
executing a babel block:

(add-hook 'org-babel-after-execute-hook 'org-display-inline-images)

In fact that was what I had in mind when adding that hook; it was just
waiting for Carsten's function. So in my mind this gets us some of the
way towards org-babel as an "interactive notebook", as discussed in
another recent thread.


Dan

p.s. For what its worth, here is the code I was using to make images
appear using text properties and Org font lock. I was intending to post
this when I was happy with the image refresh stuff, but it is probably
redundant in light of the new functions using overlays. A certain amount
of messing about with image redisplay and cache functions is evident.

I did not know you were working on this, sorry for stepping on your toes here. Let me know if you think we should go back to text properties and font- lock.

- Carsten



--8<---------------cut here---------------start------------->8---
(defun dan/org-fontify-image-links (limit)
"Display links to images as images.
If the description part of the link is empty display the image,
otherwise do nothing. This function is intended to be called
during font-lock fontification."
(let ((case-fold-search t) file image)
  (and dan/org-display-inline-images
       (re-search-forward
(concat "\\[\\[file:\\(" iimage-mode-image-filename-regex "\ \)\\]\\]") limit t)
       (setq file (match-string 1))
       (setq file (iimage-locate-file file (list default-directory)))
       (setq image (create-image file))
(add-text-properties (match-beginning 0) (match-end 0) (list 'display image))
       ;; (clear-image-cache)
       (image-refresh image)
       ;; (redisplay)
       ;; (redraw-frame)
       ;; (redraw-display)
       ;; (image-refresh image)
       )))

(setq dan/org-display-inline-images t)
(add-hook 'org-font-lock-hook 'dan/org-fontify-image-links)
--8<---------------cut here---------------end--------------->8---




Thanks.

------------------------------------------------------------------
Russell Adams                            address@hidden

PGP Key ID:     0x1160DCB3           http://www.adamsinfoserv.com/

Fingerprint:    1723 D8CA 4280 1EC9 557F  66E8 1154 E018 1160 DCB3

_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
address@hidden
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
address@hidden
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

- Carsten






reply via email to

[Prev in Thread] Current Thread [Next in Thread]