>From eb1de6c2bcd02593a4a704f805faa9020f5fdddb Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou
Date: Thu, 4 Feb 2016 09:32:51 +0100
Subject: [PATCH] Remove LaTeX overlay when text below is modified
* lisp/org.el (org--format-latex-make-overlay): New function.
(org-format-latex): Use new function.
Reported-by: Dima Kogan
---
lisp/org.el | 41 ++++++++++++++++++++++-------------------
1 file changed, 22 insertions(+), 19 deletions(-)
diff --git a/lisp/org.el b/lisp/org.el
index fd08292..a48ae70 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -19079,6 +19079,27 @@ for all fragments in the buffer."
(set-window-start nil window-start)
(message (concat msg "done")))))))
+(defun org--format-latex-make-overlay (beg end image)
+ "Build an overlay between BEG and END using IMAGE file.
+Register new overlay in `org-latex-fragment-image-overlays'."
+ (let ((ov (make-overlay beg end)))
+ (overlay-put ov 'org-overlay-type 'org-latex-overlay)
+ (overlay-put ov 'evaporate t)
+ (overlay-put ov
+ 'modification-hooks
+ (list (lambda (o flag beg end &optional l)
+ (unless flag
+ (org-remove-latex-fragment-image-overlays
+ (overlay-start o) (overlay-end o))))))
+ (if (featurep 'xemacs)
+ (progn
+ (overlay-put ov 'invisible t)
+ (overlay-put ov 'end-glyph (make-glyph (vector 'png :file image))))
+ (overlay-put ov
+ 'display
+ (list 'image :type 'png :file image :ascent 'center)))
+ (push ov org-latex-fragment-image-overlays)))
+
(defun org-format-latex
(prefix &optional dir overlays msg forbuffer processing-type)
"Replace LaTeX fragments with links to an image, and produce images.
@@ -19170,25 +19191,7 @@ Some of the options can be changed using the variable
(when (eq (overlay-get o 'org-overlay-type)
'org-latex-overlay)
(delete-overlay o)))
- (let ((ov (make-overlay beg end)))
- (overlay-put ov
- 'org-overlay-type
- 'org-latex-overlay)
- (overlay-put ov 'evaporate t)
- (if (featurep 'xemacs)
- (progn
- (overlay-put ov 'invisible t)
- (overlay-put
- ov 'end-glyph
- (make-glyph
- (vector 'png :file movefile))))
- (overlay-put
- ov 'display
- (list 'image
- :type 'png
- :file movefile
- :ascent 'center)))
- (push ov org-latex-fragment-image-overlays))
+ (org--format-latex-make-overlay beg end movefile)
(goto-char end))
(delete-region beg end)
(insert
--
2.6.3