From 0459a74877dbe82222d52b3fb05e8ca0a51149f0 Mon Sep 17 00:00:00 2001 From: Katsumi Yamaoka Date: Thu, 10 Jun 2004 02:37:47 +0000 Subject: [PATCH] * gnus-ems.el (gnus-remove-image): Don't use message-text-with-property; remove only the image found first. * gnus-smas.el (gnus-xmas-remove-image): Remove only the image found first. --- lisp/ChangeLog | 8 ++++++++ lisp/gnus-ems.el | 32 ++++++++++++++++++-------------- lisp/gnus-xmas.el | 5 +++-- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 58eca3918..b9ccbe755 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2004-06-10 Katsumi Yamaoka + + * gnus-ems.el (gnus-remove-image): Don't use + message-text-with-property; remove only the image found first. + + * gnus-smas.el (gnus-xmas-remove-image): Remove only the image + found first. + 2004-06-09 Jesper Harder * message.el (message-send-mail-with-sendmail): Use with-current-buffer. diff --git a/lisp/gnus-ems.el b/lisp/gnus-ems.el index c8cf69991..dcea8f6a2 100644 --- a/lisp/gnus-ems.el +++ b/lisp/gnus-ems.el @@ -48,8 +48,6 @@ (autoload 'nnheader-find-etc-directory "nnheader")) (autoload 'smiley-region "smiley") -;; Fixme: shouldn't require message -(autoload 'message-text-with-property "message") (defun gnus-kill-all-overlays () "Delete all overlays in the current buffer." @@ -223,18 +221,24 @@ glyph)) (defun gnus-remove-image (image &optional category) - (let ((regions (message-text-with-property 'display)) - start end) - (while regions - (setq start (caar regions) - end (cdar regions) - regions (cdr regions)) - (when (and (equal (get-text-property start 'display) image) - (equal (get-text-property start 'gnus-image-category) - category)) - (put-text-property start end 'display nil) - (when (get-text-property start 'gnus-image-text-deletable) - (delete-region start end)))))) + "Remove the image matching IMAGE and CATEGORY found first." + (let ((start (point-min)) + val end) + (while (and (not end) + (or (setq val (get-text-property start 'display)) + (and (setq start + (next-single-property-change start 'display)) + (setq val (get-text-property start 'display))))) + (setq end (next-single-property-change start 'display)) + (if (and (equal val image) + (equal (get-text-property start 'gnus-image-category) + category)) + (progn + (put-text-property start end 'display nil) + (when (get-text-property start 'gnus-image-text-deletable) + (delete-region start end))) + (setq start end + end nil))))) (provide 'gnus-ems) diff --git a/lisp/gnus-xmas.el b/lisp/gnus-xmas.el index 6f0a2a1d7..2de022d67 100644 --- a/lisp/gnus-xmas.el +++ b/lisp/gnus-xmas.el @@ -837,12 +837,13 @@ Warning: Don't insert text immediately after the image." glyph) (defun gnus-xmas-remove-image (image &optional category) + "Remove the image matching IMAGE and CATEGORY found first." (map-extents (lambda (ext unused) (when (equal (extent-end-glyph ext) image) (set-extent-property ext 'invisible nil) - (set-extent-property ext 'end-glyph nil)) - nil) + (set-extent-property ext 'end-glyph nil) + t)) nil nil nil nil nil 'gnus-image category)) (defun gnus-xmas-assq-delete-all (key alist) -- 2.34.1