1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

* lisp/iimage.el: Remove images as soon as the underlying text is modified.

(iimage-modification-hook): New function.
(iimage-mode-buffer): Use it.
This commit is contained in:
Martin Pohlack 2010-06-07 17:01:23 -04:00 committed by Stefan Monnier
parent 83156c183f
commit 277e674181
3 changed files with 34 additions and 13 deletions

View file

@ -1,3 +1,9 @@
2010-06-07 Martin Pohlack <mp26@os.inf.tu-dresden.de>
* iimage.el: Remove images as soon as the underlying text is modified.
(iimage-modification-hook): New function.
(iimage-mode-buffer): Use it.
2010-06-07 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/smie.el (smie-indent-offset-rule): Rename from
@ -4691,8 +4697,8 @@
2009-12-10 Vinicius Jose Latorre <viniciusjl@ig.com.br>
* whitespace.el (whitespace-display-char-on): Ensure
`buffer-display-table' is unique when two or more windows are
* whitespace.el (whitespace-display-char-on):
Ensure `buffer-display-table' is unique when two or more windows are
visible. Reported by Martin Pohlack <mp26@os.inf.tu-dresden.de>.
New version 12.1.

View file

@ -7161,7 +7161,7 @@
* doc-view.el (doc-view-search-backward, doc-view-search):
Fix assignment to free variable bug.
2007-11-16 Martin Pohlack <mp26@os.inf.tu-dresden.de> (tiny change)
2007-11-16 Martin Pohlack <mp26@os.inf.tu-dresden.de>
* emulation/pc-select.el (pc-select-shifted-mark): New var.
(ensure-mark): Set it.

View file

@ -101,6 +101,19 @@ Examples of image filename regexps:
(interactive)
(iimage-mode 0))
(defun iimage-modification-hook (beg end)
"Remove display property if a display region is modified."
;;(debug-print "ii1 begin %d, end %d\n" beg end)
(let ((inhibit-modification-hooks t)
(beg (previous-single-property-change end 'display
nil (line-beginning-position)))
(end (next-single-property-change beg 'display
nil (line-end-position))))
(when (and beg end (plist-get (text-properties-at beg) 'display))
;;(debug-print "ii2 begin %d, end %d\n" beg end)
(remove-text-properties beg end
'(display nil modification-hooks nil)))))
(defun iimage-mode-buffer (arg)
"Display images if ARG is non-nil, undisplay them otherwise."
(let ((image-path (cons default-directory iimage-mode-image-search-path))
@ -110,16 +123,18 @@ Examples of image filename regexps:
(goto-char (point-min))
(dolist (pair iimage-mode-image-regex-alist)
(while (re-search-forward (car pair) nil t)
(if (and (setq file (match-string (cdr pair)))
(setq file (locate-file file image-path)))
;; FIXME: we don't mark our images, so we can't reliably
;; remove them either (we may leave some of ours, and we
;; may remove other packages's display properties).
(if arg
(add-text-properties (match-beginning 0) (match-end 0)
(list 'display (create-image file)))
(remove-text-properties (match-beginning 0) (match-end 0)
'(display))))))))))
(when (and (setq file (match-string (cdr pair)))
(setq file (locate-file file image-path)))
;; FIXME: we don't mark our images, so we can't reliably
;; remove them either (we may leave some of ours, and we
;; may remove other packages's display properties).
(if arg
(add-text-properties (match-beginning 0) (match-end 0)
`(display ,(create-image file)
modification-hooks
(iimage-modification-hook)))
(remove-text-properties (match-beginning 0) (match-end 0)
'(display modification-hooks))))))))))
;;;###autoload
(define-minor-mode iimage-mode